<?php include_once(APP_ROOT.'/bootstrap.php'); ?>
<?php 
/**
* 名称：登录页面控制器。
* 描述：封装“用户登录概念”的程序逻辑，统一进行相关程序的操作。
*/
final class Controller_Login{
    /**
    * 描述：主程序入口，根据"控制器标识符"调用相关程序。
    */
    public function __Construct($method){
        switch($method){
            #登录程序
            case 'logging': 
                echo json_encode($this->Logging());
            break;
            #登出程序
            case 'logout':  
                Model_Account::Logout();
                Template::Display('login.html');
            break;
            #超时登录页面
            case 'timeout_view':
                Template::Display('login_timeout.html');
            break;
            #超时登录程序
            case 'timeout_logging':
                $this->Logging_Timeout();
            break;
            #普通请求逻辑程序
            default:
                $this->ViewLogic();
            break;
        }
    }    
    /**
    * 描述：普通请求访问时验证用户cookie信息，如果登录了就转向主面板页面，没登录显示登录页面。
    * @return void
    */   
    private function ViewLogic() {
        if(Model_Account::IsLogin()===TRUE){
            Route::Redirect(array(
                'controller'=>'index'
            ));
        }       
        else{
            Template::Display('login.html');
        }        
    }
    /**
    * 描述：根据用户提交的用户信息的结果返回信息,供AJAX脚本调用。
    * @return void
    */
    private function Logging(){
        #获取表单信息。
        list($username,$password,$captcha,$isRemember)=array(NULL,NULL,NULL,NULL);
        if(isset($_POST['username'])){
            $username=trim($_POST['username']);
        }
        if(isset($_POST['password'])){
            $password=Model_Account::Hash($_POST['password']);
        }
        if(isset($_POST['captcha'])){
            $captcha=trim($_POST['captcha']);
        }
        if(isset($_POST['remember'])){
            $isRemember=$_POST['remember'];
        }
        #验证码验证。
        if($captcha!==Captcha::GetSessionValue()){
            return array(
                'error'=>'1','message'=>'您输入的验证码不正确，请重新输入。'
            );
        }        
        #进行身份验证。
        if(Model_Account::IsRightUser($username,$password)){
            Model_Account::Login($username,$password,$isRemember); //执行登录程序。
            Captcha::DeleteSession(); //释放验证码session
            return array(
                'error'=>'0','message'=>'?'.DEFAULT_PARAMETERS_APP.'='.APP_NAME.'&'.DEFAULT_PARAMETERS_CONTROLLER.'=index'
            );
        }
        else{
            return array(
                'error'=>'2','message'=>'您输入的帐号或密码不正确，请重新输入。'
            );
        }       
    }   
    /**
    * 描述：登录程序，在超时登录时调用。
    * @return void
    */    
    private function Logging_Timeout(){
        $status=$this->Logging();
        if($status['error']=='0'){
            echo json_encode(array(
                'statusCode'=>'200',
                'message'=>'',
                'navTabId'=>'',
                'callbackType'=>'closeCurrent',
                'forwardUrl'=>''
            ));
        }
        else{
            echo json_encode(array(
                'statusCode'=>'300',
                'message'=>$status['message'],
                'navTabId'=>'',
                'callbackType'=>'',
                'forwardUrl'=>''
            ));                  
        }        
    }
}
?>